[INFO] cloning repository https://github.com/frezcirno/mimalloc-rs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/frezcirno/mimalloc-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffrezcirno%2Fmimalloc-rs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffrezcirno%2Fmimalloc-rs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] b5518d8f9da15859d13fff019124ff118f82b0e2
[INFO] fixing frezcirno/mimalloc-rs against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=end=2015,2024 for pr-157817-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffrezcirno%2Fmimalloc-rs" "/workspace/builds/worker-7-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/frezcirno/mimalloc-rs
[INFO] finished tweaking git repo https://github.com/frezcirno/mimalloc-rs
[INFO] tweaked toml for git repo https://github.com/frezcirno/mimalloc-rs written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/frezcirno/mimalloc-rs on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/frezcirno/mimalloc-rs already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 2f54df66835a7032c9b60e0092f93743cd1dca3ceecfd5903a6748b96e89b45e
[INFO] running `Command { std: "docker" "start" "2f54df66835a7032c9b60e0092f93743cd1dca3ceecfd5903a6748b96e89b45e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "2f54df66835a7032c9b60e0092f93743cd1dca3ceecfd5903a6748b96e89b45e" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2f54df66835a7032c9b60e0092f93743cd1dca3ceecfd5903a6748b96e89b45e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "2f54df66835a7032c9b60e0092f93743cd1dca3ceecfd5903a6748b96e89b45e" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=end=2015,2024", kill_on_drop: false }`
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating Cargo.toml from 2021 edition to 2024
[INFO] [stderr]    Compiling proc-macro2 v1.0.92
[INFO] [stderr]    Compiling libc v0.2.164
[INFO] [stderr]    Compiling quote v1.0.37
[INFO] [stderr]    Compiling syn v2.0.89
[INFO] [stderr]    Compiling ctor v0.2.9
[INFO] [stderr]     Checking mimalloc_rs v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]    Migrating src/lib.rs from 2021 edition to 2024
[INFO] [stderr]        Fixed src/segment.rs (32 fixes)
[INFO] [stderr]        Fixed src/page.rs (22 fixes)
[INFO] [stderr]        Fixed src/os.rs (1 fix)
[INFO] [stderr]        Fixed src/heap.rs (10 fixes)
[INFO] [stderr]        Fixed src/internal.rs (30 fixes)
[INFO] [stderr]        Fixed src/alloc.rs (14 fixes)
[INFO] [stderr]        Fixed src/page_queue.rs (7 fixes)
[INFO] [stderr]        Fixed src/lib.rs (12 fixes)
[INFO] [stderr]        Fixed src/init.rs (3 fixes)
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/init.rs:39:28
[INFO] [stdout]     |
[INFO] [stdout]  39 |         unsafe { MI_INIT![&MI_PAGE_EMPTY as *const MiPage as *mut MiPage; 130] }
[INFO] [stdout]     |                            ^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pages_free_direct: MI_SMALL_PAGES_EMPTY!(),
[INFO] [stdout]     |                        ----------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: `--force-warn static-mut-refs` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout]     = note: this warning originates in the macro `MI_SMALL_PAGES_EMPTY` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout]  19 - pub(crate) static mut MI_PAGE_EMPTY: MiPage = MiPage {
[INFO] [stdout]  19 + pub(crate) static MI_PAGE_EMPTY: MiPage = MiPage {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/init.rs:39:28
[INFO] [stdout]     |
[INFO] [stdout]  39 |         unsafe { MI_INIT![&MI_PAGE_EMPTY as *const MiPage as *mut MiPage; 130] }
[INFO] [stdout]     |                            ^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pages_free_direct: MI_SMALL_PAGES_EMPTY!(),
[INFO] [stdout]     |                        ----------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: this warning originates in the macro `MI_SMALL_PAGES_EMPTY` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout]  19 - pub(crate) static mut MI_PAGE_EMPTY: MiPage = MiPage {
[INFO] [stdout]  19 + pub(crate) static MI_PAGE_EMPTY: MiPage = MiPage {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:560:12
[INFO] [stdout]     |
[INFO] [stdout] 560 |       while !ABANDONED
[INFO] [stdout]     |  ____________^
[INFO] [stdout] 561 | |         .compare_exchange(
[INFO] [stdout] 562 | |             segment,
[INFO] [stdout] 563 | |             (*segment).abandoned_next,
[INFO] [stdout] 564 | |             Ordering::Relaxed,
[INFO] [stdout] 565 | |             Ordering::SeqCst,
[INFO] [stdout] 566 | |         )
[INFO] [stdout]     | |_________^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 538 - static mut ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout] 538 + static ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:569:37
[INFO] [stdout]     |
[INFO] [stdout] 569 |         (*segment).abandoned_next = ABANDONED.load(Ordering::Relaxed);
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 538 - static mut ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout] 538 + static ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:571:5
[INFO] [stdout]     |
[INFO] [stdout] 571 |     ABANDONED_COUNT.fetch_add(1, Ordering::Relaxed);
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 539 - static mut ABANDONED_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout] 539 + static ABANDONED_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:594:18
[INFO] [stdout]     |
[INFO] [stdout] 594 |         atmost = ABANDONED_COUNT.load(Ordering::Relaxed) + 16;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 539 - static mut ABANDONED_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout] 539 + static ABANDONED_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:596:18
[INFO] [stdout]     |
[INFO] [stdout] 596 |         atmost = ABANDONED_COUNT.load(Ordering::Relaxed) / 8;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 539 - static mut ABANDONED_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout] 539 + static ABANDONED_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:605:27
[INFO] [stdout]     |
[INFO] [stdout] 605 |         let mut segment = ABANDONED.load(Ordering::Relaxed);
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 538 - static mut ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout] 538 + static ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:607:17
[INFO] [stdout]     |
[INFO] [stdout] 607 |               && !ABANDONED
[INFO] [stdout]     |  _________________^
[INFO] [stdout] 608 | |                 .compare_exchange(
[INFO] [stdout] 609 | |                     segment,
[INFO] [stdout] 610 | |                     (*segment).abandoned_next,
[INFO] [stdout] 611 | |                     Ordering::Relaxed,
[INFO] [stdout] 612 | |                     Ordering::SeqCst,
[INFO] [stdout] 613 | |                 )
[INFO] [stdout]     | |_________________^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 538 - static mut ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout] 538 + static ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:616:23
[INFO] [stdout]     |
[INFO] [stdout] 616 |             segment = ABANDONED.load(Ordering::Relaxed);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 538 - static mut ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout] 538 + static ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:623:9
[INFO] [stdout]     |
[INFO] [stdout] 623 |         ABANDONED_COUNT.fetch_sub(1, Ordering::Relaxed);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 539 - static mut ABANDONED_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout] 539 + static ABANDONED_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/init.rs:39:28
[INFO] [stdout]     |
[INFO] [stdout]  39 |         unsafe { MI_INIT![&MI_PAGE_EMPTY as *const MiPage as *mut MiPage; 130] }
[INFO] [stdout]     |                            ^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pages_free_direct: MI_SMALL_PAGES_EMPTY!(),
[INFO] [stdout]     |                        ----------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: `--force-warn static-mut-refs` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout]     = note: this warning originates in the macro `MI_SMALL_PAGES_EMPTY` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout]  19 - pub(crate) static mut MI_PAGE_EMPTY: MiPage = MiPage {
[INFO] [stdout]  19 + pub(crate) static MI_PAGE_EMPTY: MiPage = MiPage {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/init.rs:39:28
[INFO] [stdout]     |
[INFO] [stdout]  39 |         unsafe { MI_INIT![&MI_PAGE_EMPTY as *const MiPage as *mut MiPage; 130] }
[INFO] [stdout]     |                            ^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pages_free_direct: MI_SMALL_PAGES_EMPTY!(),
[INFO] [stdout]     |                        ----------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: this warning originates in the macro `MI_SMALL_PAGES_EMPTY` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout]  19 - pub(crate) static mut MI_PAGE_EMPTY: MiPage = MiPage {
[INFO] [stdout]  19 + pub(crate) static MI_PAGE_EMPTY: MiPage = MiPage {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:560:12
[INFO] [stdout]     |
[INFO] [stdout] 560 |       while !ABANDONED
[INFO] [stdout]     |  ____________^
[INFO] [stdout] 561 | |         .compare_exchange(
[INFO] [stdout] 562 | |             segment,
[INFO] [stdout] 563 | |             (*segment).abandoned_next,
[INFO] [stdout] 564 | |             Ordering::Relaxed,
[INFO] [stdout] 565 | |             Ordering::SeqCst,
[INFO] [stdout] 566 | |         )
[INFO] [stdout]     | |_________^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 538 - static mut ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout] 538 + static ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:569:37
[INFO] [stdout]     |
[INFO] [stdout] 569 |         (*segment).abandoned_next = ABANDONED.load(Ordering::Relaxed);
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 538 - static mut ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout] 538 + static ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:571:5
[INFO] [stdout]     |
[INFO] [stdout] 571 |     ABANDONED_COUNT.fetch_add(1, Ordering::Relaxed);
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 539 - static mut ABANDONED_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout] 539 + static ABANDONED_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:594:18
[INFO] [stdout]     |
[INFO] [stdout] 594 |         atmost = ABANDONED_COUNT.load(Ordering::Relaxed) + 16;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 539 - static mut ABANDONED_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout] 539 + static ABANDONED_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:596:18
[INFO] [stdout]     |
[INFO] [stdout] 596 |         atmost = ABANDONED_COUNT.load(Ordering::Relaxed) / 8;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 539 - static mut ABANDONED_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout] 539 + static ABANDONED_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:605:27
[INFO] [stdout]     |
[INFO] [stdout] 605 |         let mut segment = ABANDONED.load(Ordering::Relaxed);
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 538 - static mut ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout] 538 + static ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:607:17
[INFO] [stdout]     |
[INFO] [stdout] 607 |               && !ABANDONED
[INFO] [stdout]     |  _________________^
[INFO] [stdout] 608 | |                 .compare_exchange(
[INFO] [stdout] 609 | |                     segment,
[INFO] [stdout] 610 | |                     (*segment).abandoned_next,
[INFO] [stdout] 611 | |                     Ordering::Relaxed,
[INFO] [stdout] 612 | |                     Ordering::SeqCst,
[INFO] [stdout] 613 | |                 )
[INFO] [stdout]     | |_________________^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 538 - static mut ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout] 538 + static ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:616:23
[INFO] [stdout]     |
[INFO] [stdout] 616 |             segment = ABANDONED.load(Ordering::Relaxed);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 538 - static mut ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout] 538 + static ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:623:9
[INFO] [stdout]     |
[INFO] [stdout] 623 |         ABANDONED_COUNT.fetch_sub(1, Ordering::Relaxed);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 539 - static mut ABANDONED_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout] 539 + static ABANDONED_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 8.28s
[INFO] [stderr] crater-edition-check: mimalloc_rs v0.1.0 (/opt/rustwide/workdir) updating edition from 2021 to 2024
[INFO] [stderr]     Checking mimalloc_rs v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `mi_assert_expensive` and `mi_assert`
[INFO] [stdout]  --> src/internal.rs:7:20
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::types::{mi_assert, mi_assert_expensive, mi_assert_internal};
[INFO] [stdout]   |                    ^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `mi_assert_expensive` and `mi_assert`
[INFO] [stdout]  --> src/internal.rs:7:20
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::types::{mi_assert, mi_assert_expensive, mi_assert_internal};
[INFO] [stdout]   |                    ^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/heap.rs:168:9
[INFO] [stdout]     |
[INFO] [stdout] 137 | unsafe fn mi_heap_collect_ex(heap: *mut MiHeap, collect: MiCollect) { unsafe {
[INFO] [stdout]     |                                                                       ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 168 |         unsafe {
[INFO] [stdout]     |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/internal.rs:174:19
[INFO] [stdout]     |
[INFO] [stdout] 172 | pub(crate) unsafe fn mi_page_has_free(page: *mut MiPage) -> bool { unsafe {
[INFO] [stdout]     |                                                                    ------ because it's nested under this `unsafe` block
[INFO] [stdout] 173 |     mi_assert_internal(!page.is_null());
[INFO] [stdout] 174 |     let hasfree = unsafe {
[INFO] [stdout]     |                   ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `page`
[INFO] [stdout]    --> src/internal.rs:231:36
[INFO] [stdout]     |
[INFO] [stdout] 231 | pub(crate) unsafe fn mi_block_next(page: *const MiPage, block: *const MiBlock) -> *const MiBlock { unsafe {
[INFO] [stdout]     |                                    ^^^^ help: if this is intentional, prefix it with an underscore: `_page`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `page`
[INFO] [stdout]    --> src/internal.rs:237:5
[INFO] [stdout]     |
[INFO] [stdout] 237 |     page: *const MiPage,
[INFO] [stdout]     |     ^^^^ help: if this is intentional, prefix it with an underscore: `_page`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]   --> src/page.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 32 | ) -> *mut MiBlock { unsafe {
[INFO] [stdout]    |                     ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 35 |     unsafe { page_start.add(i * (*page).block_size) as *mut MiBlock }
[INFO] [stdout]    |     ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/page.rs:357:21
[INFO] [stdout]     |
[INFO] [stdout] 356 | ) { unsafe {
[INFO] [stdout]     |     ------ because it's nested under this `unsafe` block
[INFO] [stdout] 357 |     let page_area = unsafe { _mi_page_start(_mi_page_segment(page), page, null_mut()) };
[INFO] [stdout]     |                     ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/page.rs:359:17
[INFO] [stdout]     |
[INFO] [stdout] 356 | ) { unsafe {
[INFO] [stdout]     |     ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 359 |     let start = unsafe { mi_page_block_at(page, page_area, (*page).capacity.into()) };
[INFO] [stdout]     |                 ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/page.rs:362:15
[INFO] [stdout]     |
[INFO] [stdout] 356 | ) { unsafe {
[INFO] [stdout]     |     ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 362 |     let end = unsafe {
[INFO] [stdout]     |               ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/page.rs:372:20
[INFO] [stdout]     |
[INFO] [stdout] 356 | ) { unsafe {
[INFO] [stdout]     |     ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 372 |         let next = unsafe { (block as *mut u8).add(bsize) as *mut MiBlock };
[INFO] [stdout]     |                    ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/page.rs:373:9
[INFO] [stdout]     |
[INFO] [stdout] 356 | ) { unsafe {
[INFO] [stdout]     |     ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 373 |         unsafe { mi_block_set_next(page, block, next) };
[INFO] [stdout]     |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/page.rs:377:5
[INFO] [stdout]     |
[INFO] [stdout] 356 | ) { unsafe {
[INFO] [stdout]     |     ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 377 |     unsafe { mi_block_set_next(page, end, null_mut()) };
[INFO] [stdout]     |     ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/page.rs:565:28
[INFO] [stdout]     |
[INFO] [stdout] 557 | unsafe fn mi_huge_page_alloc(heap: *mut MiHeap, size: usize) -> *mut MiPage { unsafe {
[INFO] [stdout]     |                                                                               ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 565 |         mi_assert_internal(unsafe { (*page).block_size } == block_size);
[INFO] [stdout]     |                            ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/page.rs:599:24
[INFO] [stdout]     |
[INFO] [stdout] 571 | pub(crate) unsafe fn _mi_malloc_generic(mut heap: *mut MiHeap, size: usize) -> *mut u8 { unsafe {
[INFO] [stdout]     |                                                                                          ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 599 |     mi_assert_internal(unsafe { (*page).block_size } >= size);
[INFO] [stdout]     |                        ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MiHeapArea` is never constructed
[INFO] [stdout]   --> src/lib.rs:38:19
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub(crate) struct MiHeapArea {
[INFO] [stdout]    |                   ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `MiBlockVisitFun` is never used
[INFO] [stdout]   --> src/lib.rs:46:17
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub(crate) type MiBlockVisitFun = fn(
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_malloc_small` is never used
[INFO] [stdout]   --> src/alloc.rs:43:11
[INFO] [stdout]    |
[INFO] [stdout] 43 | unsafe fn mi_malloc_small(size: usize) -> *mut u8 {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_zalloc_small` is never used
[INFO] [stdout]   --> src/alloc.rs:49:11
[INFO] [stdout]    |
[INFO] [stdout] 49 | unsafe fn mi_zalloc_small(size: usize) -> *mut u8 { unsafe {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_zalloc` is never used
[INFO] [stdout]   --> src/alloc.rs:85:15
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub unsafe fn mi_heap_zalloc(heap: *mut MiHeap, size: usize) -> *mut u8 { unsafe {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_zalloc` is never used
[INFO] [stdout]   --> src/alloc.rs:89:15
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub unsafe fn mi_zalloc(size: usize) -> *mut u8 { unsafe {
[INFO] [stdout]    |               ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_usable_size` is never used
[INFO] [stdout]    --> src/alloc.rs:250:15
[INFO] [stdout]     |
[INFO] [stdout] 250 | pub unsafe fn mi_usable_size(p: *mut u8) -> usize { unsafe {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_collect` is never used
[INFO] [stdout]    --> src/heap.rs:195:11
[INFO] [stdout]     |
[INFO] [stdout] 195 | unsafe fn mi_heap_collect(heap: *mut MiHeap, force: bool) { unsafe {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_collect` is never used
[INFO] [stdout]    --> src/heap.rs:206:11
[INFO] [stdout]     |
[INFO] [stdout] 206 | unsafe fn mi_collect(force: bool) { unsafe {
[INFO] [stdout]     |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_get_default` is never used
[INFO] [stdout]    --> src/heap.rs:213:15
[INFO] [stdout]     |
[INFO] [stdout] 213 | pub(crate) fn mi_heap_get_default() -> *mut MiHeap {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_get_backing` is never used
[INFO] [stdout]    --> src/heap.rs:218:4
[INFO] [stdout]     |
[INFO] [stdout] 218 | fn mi_heap_get_backing() -> *mut MiHeap {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_new` is never used
[INFO] [stdout]    --> src/heap.rs:227:4
[INFO] [stdout]     |
[INFO] [stdout] 227 | fn mi_heap_new() -> *mut MiHeap {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_reset_pages` is never used
[INFO] [stdout]    --> src/heap.rs:243:11
[INFO] [stdout]     |
[INFO] [stdout] 243 | unsafe fn mi_heap_reset_pages(heap: *mut MiHeap) { unsafe {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_free` is never used
[INFO] [stdout]    --> src/heap.rs:258:11
[INFO] [stdout]     |
[INFO] [stdout] 258 | unsafe fn mi_heap_free(heap: *mut MiHeap) { unsafe {
[INFO] [stdout]     |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_destroy_pages` is never used
[INFO] [stdout]    --> src/heap.rs:313:11
[INFO] [stdout]     |
[INFO] [stdout] 313 | unsafe fn mi_heap_destroy_pages(heap: *mut MiHeap) { unsafe {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_destroy` is never used
[INFO] [stdout]    --> src/heap.rs:323:4
[INFO] [stdout]     |
[INFO] [stdout] 323 | fn mi_heap_destroy(heap: *mut MiHeap) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_absorb` is never used
[INFO] [stdout]    --> src/heap.rs:348:4
[INFO] [stdout]     |
[INFO] [stdout] 348 | fn mi_heap_absorb(heap: *mut MiHeap, from: *mut MiHeap) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_delete` is never used
[INFO] [stdout]    --> src/heap.rs:384:4
[INFO] [stdout]     |
[INFO] [stdout] 384 | fn mi_heap_delete(heap: *mut MiHeap) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_of_block` is never used
[INFO] [stdout]    --> src/heap.rs:416:4
[INFO] [stdout]     |
[INFO] [stdout] 416 | fn mi_heap_of_block(p: *const MiBlock) -> *mut MiHeap {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_contains_block` is never used
[INFO] [stdout]    --> src/heap.rs:426:4
[INFO] [stdout]     |
[INFO] [stdout] 426 | fn mi_heap_contains_block(heap: *mut MiHeap, p: *const MiBlock) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_page_check_owned` is never used
[INFO] [stdout]    --> src/heap.rs:434:4
[INFO] [stdout]     |
[INFO] [stdout] 434 | fn mi_heap_page_check_owned(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_check_owned` is never used
[INFO] [stdout]    --> src/heap.rs:455:4
[INFO] [stdout]     |
[INFO] [stdout] 455 | fn mi_heap_check_owned(heap: *mut MiHeap, p: *const MiBlock) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_check_owned` is never used
[INFO] [stdout]    --> src/heap.rs:475:4
[INFO] [stdout]     |
[INFO] [stdout] 475 | fn mi_check_owned(p: *const MiBlock) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MiHeapAreaEx` is never constructed
[INFO] [stdout]    --> src/heap.rs:486:8
[INFO] [stdout]     |
[INFO] [stdout] 486 | struct MiHeapAreaEx {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_area_visit_blocks` is never used
[INFO] [stdout]    --> src/heap.rs:491:4
[INFO] [stdout]     |
[INFO] [stdout] 491 | fn mi_heap_area_visit_blocks(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `MiHeapAreaVisitFun` is never used
[INFO] [stdout]    --> src/heap.rs:573:6
[INFO] [stdout]     |
[INFO] [stdout] 573 | type MiHeapAreaVisitFun = fn(heap: *mut MiHeap, area: *mut MiHeapAreaEx, arg: *mut u8) -> bool;
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_visit_areas_page` is never used
[INFO] [stdout]    --> src/heap.rs:575:4
[INFO] [stdout]     |
[INFO] [stdout] 575 | fn mi_heap_visit_areas_page(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_visit_areas` is never used
[INFO] [stdout]    --> src/heap.rs:605:4
[INFO] [stdout]     |
[INFO] [stdout] 605 | fn mi_heap_visit_areas(heap: *mut MiHeap, visitor: *mut MiHeapAreaVisitFun, arg: *mut u8) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MiVisitBlocksArgs` is never constructed
[INFO] [stdout]    --> src/heap.rs:621:8
[INFO] [stdout]     |
[INFO] [stdout] 621 | struct MiVisitBlocksArgs {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_area_visitor` is never used
[INFO] [stdout]    --> src/heap.rs:627:4
[INFO] [stdout]     |
[INFO] [stdout] 627 | fn mi_heap_area_visitor(heap: *mut MiHeap, xarea: *mut MiHeapAreaEx, arg: *mut u8) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_visit_blocks` is never used
[INFO] [stdout]    --> src/heap.rs:648:4
[INFO] [stdout]     |
[INFO] [stdout] 648 | fn mi_heap_visit_blocks(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_random_shuffle` is never used
[INFO] [stdout]    --> src/init.rs:195:15
[INFO] [stdout]     |
[INFO] [stdout] 195 | pub(crate) fn mi_random_shuffle(mut x: usize) -> usize {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_random_init` is never used
[INFO] [stdout]    --> src/init.rs:214:15
[INFO] [stdout]     |
[INFO] [stdout] 214 | pub(crate) fn mi_random_init(seed: usize) -> usize {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_is_default` is never used
[INFO] [stdout]   --> src/internal.rs:76:15
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub(crate) fn mi_heap_is_default(heap: *const MiHeap) -> bool {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_is_backing` is never used
[INFO] [stdout]   --> src/internal.rs:81:15
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub(crate) fn mi_heap_is_backing(heap: *const MiHeap) -> bool {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_get_free_small_page` is never used
[INFO] [stdout]   --> src/internal.rs:98:15
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub(crate) fn mi_get_free_small_page(size: usize) -> *mut MiPage {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_page_has_free` is never used
[INFO] [stdout]    --> src/internal.rs:172:22
[INFO] [stdout]     |
[INFO] [stdout] 172 | pub(crate) unsafe fn mi_page_has_free(page: *mut MiPage) -> bool { unsafe {
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_page_all_used` is never used
[INFO] [stdout]    --> src/internal.rs:192:22
[INFO] [stdout]     |
[INFO] [stdout] 192 | pub(crate) unsafe fn mi_page_all_used(page: *mut MiPage) -> bool { unsafe {
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MI_MAX_SLICE_SHIFT` is never used
[INFO] [stdout]    --> src/page.rs:348:7
[INFO] [stdout]     |
[INFO] [stdout] 348 | const MI_MAX_SLICE_SHIFT: usize = 6; // At most 64 slices
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MI_MAX_SLICES` is never used
[INFO] [stdout]    --> src/page.rs:349:7
[INFO] [stdout]     |
[INFO] [stdout] 349 | const MI_MAX_SLICES: usize = 1 << MI_MAX_SLICE_SHIFT;
[INFO] [stdout]     |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MI_MIN_SLICES` is never used
[INFO] [stdout]    --> src/page.rs:350:7
[INFO] [stdout]     |
[INFO] [stdout] 350 | const MI_MIN_SLICES: usize = 2;
[INFO] [stdout]     |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_register_deferred_free` is never used
[INFO] [stdout]    --> src/page.rs:548:22
[INFO] [stdout]     |
[INFO] [stdout] 548 | pub(crate) unsafe fn mi_register_deferred_free(fn_ptr: MiDeferredFreeFun) { unsafe {
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_page_queue_is_special` is never used
[INFO] [stdout]   --> src/page_queue.rs:23:15
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub(crate) fn mi_page_queue_is_special(pq: *const MiPageQueue) -> bool {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_bin_size` is never used
[INFO] [stdout]   --> src/page_queue.rs:73:15
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub(crate) fn mi_bin_size(bin: u8) -> usize {
[INFO] [stdout]    |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_good_size` is never used
[INFO] [stdout]   --> src/page_queue.rs:78:15
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub(crate) fn mi_good_size(size: usize) -> usize {
[INFO] [stdout]    |               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_page_queue_append` is never used
[INFO] [stdout]    --> src/page_queue.rs:269:22
[INFO] [stdout]     |
[INFO] [stdout] 269 | pub(crate) unsafe fn mi_page_queue_append(
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_page_size` is never used
[INFO] [stdout]    --> src/segment.rs:405:11
[INFO] [stdout]     |
[INFO] [stdout] 405 | unsafe fn mi_page_size(page: *const MiPage) -> usize { unsafe {
[INFO] [stdout]     |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MI_INTPTR_SIZE` is never used
[INFO] [stdout]   --> src/types.rs:23:18
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub(crate) const MI_INTPTR_SIZE: usize = 1 << MI_INTPTR_SHIFT;
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MI_LARGE_PAGES_PER_SEGMENT` is never used
[INFO] [stdout]   --> src/types.rs:43:18
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub(crate) const MI_LARGE_PAGES_PER_SEGMENT: usize = MI_SEGMENT_SIZE / MI_LARGE_PAGE_SIZE;
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `store` is never used
[INFO] [stdout]    --> src/types.rs:167:19
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl MiThreadFree {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub(crate) fn store(&self, value: usize) {
[INFO] [stdout]     |                   ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MiStatCount` is never constructed
[INFO] [stdout]    --> src/types.rs:349:19
[INFO] [stdout]     |
[INFO] [stdout] 349 | pub(crate) struct MiStatCount {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MiStatCounter` is never constructed
[INFO] [stdout]    --> src/types.rs:357:19
[INFO] [stdout]     |
[INFO] [stdout] 357 | pub(crate) struct MiStatCounter {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MiStats` is never constructed
[INFO] [stdout]    --> src/types.rs:363:19
[INFO] [stdout]     |
[INFO] [stdout] 363 | pub(crate) struct MiStats {
[INFO] [stdout]     |                   ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/init.rs:39:28
[INFO] [stdout]     |
[INFO] [stdout]  39 |         unsafe { MI_INIT![&MI_PAGE_EMPTY as *const MiPage as *mut MiPage; 130] }
[INFO] [stdout]     |                            ^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pages_free_direct: MI_SMALL_PAGES_EMPTY!(),
[INFO] [stdout]     |                        ----------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: `#[deny(static_mut_refs)]` (part of `#[deny(rust_2024_compatibility)]`) on by default
[INFO] [stdout]     = note: this error originates in the macro `MI_SMALL_PAGES_EMPTY` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout]  19 - pub(crate) static mut MI_PAGE_EMPTY: MiPage = MiPage {
[INFO] [stdout]  19 + pub(crate) static MI_PAGE_EMPTY: MiPage = MiPage {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/init.rs:39:28
[INFO] [stdout]     |
[INFO] [stdout]  39 |         unsafe { MI_INIT![&MI_PAGE_EMPTY as *const MiPage as *mut MiPage; 130] }
[INFO] [stdout]     |                            ^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pages_free_direct: MI_SMALL_PAGES_EMPTY!(),
[INFO] [stdout]     |                        ----------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: this error originates in the macro `MI_SMALL_PAGES_EMPTY` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout]  19 - pub(crate) static mut MI_PAGE_EMPTY: MiPage = MiPage {
[INFO] [stdout]  19 + pub(crate) static MI_PAGE_EMPTY: MiPage = MiPage {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]    --> src/init.rs:216:32
[INFO] [stdout]     |
[INFO] [stdout] 216 |     let mut x = mi_random_init as usize;
[INFO] [stdout]     |                                ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(function_casts_as_integer)]` on by default
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]     |
[INFO] [stdout] 216 |     let mut x = mi_random_init as *const () as usize;
[INFO] [stdout]     |                                ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:560:12
[INFO] [stdout]     |
[INFO] [stdout] 560 |       while !ABANDONED
[INFO] [stdout]     |  ____________^
[INFO] [stdout] 561 | |         .compare_exchange(
[INFO] [stdout] 562 | |             segment,
[INFO] [stdout] 563 | |             (*segment).abandoned_next,
[INFO] [stdout] 564 | |             Ordering::Relaxed,
[INFO] [stdout] 565 | |             Ordering::SeqCst,
[INFO] [stdout] 566 | |         )
[INFO] [stdout]     | |_________^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 538 - static mut ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout] 538 + static ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:569:37
[INFO] [stdout]     |
[INFO] [stdout] 569 |         (*segment).abandoned_next = ABANDONED.load(Ordering::Relaxed);
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 538 - static mut ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout] 538 + static ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:571:5
[INFO] [stdout]     |
[INFO] [stdout] 571 |     ABANDONED_COUNT.fetch_add(1, Ordering::Relaxed);
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 539 - static mut ABANDONED_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout] 539 + static ABANDONED_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:594:18
[INFO] [stdout]     |
[INFO] [stdout] 594 |         atmost = ABANDONED_COUNT.load(Ordering::Relaxed) + 16;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 539 - static mut ABANDONED_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout] 539 + static ABANDONED_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:596:18
[INFO] [stdout]     |
[INFO] [stdout] 596 |         atmost = ABANDONED_COUNT.load(Ordering::Relaxed) / 8;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 539 - static mut ABANDONED_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout] 539 + static ABANDONED_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:605:27
[INFO] [stdout]     |
[INFO] [stdout] 605 |         let mut segment = ABANDONED.load(Ordering::Relaxed);
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 538 - static mut ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout] 538 + static ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:607:17
[INFO] [stdout]     |
[INFO] [stdout] 607 |               && !ABANDONED
[INFO] [stdout]     |  _________________^
[INFO] [stdout] 608 | |                 .compare_exchange(
[INFO] [stdout] 609 | |                     segment,
[INFO] [stdout] 610 | |                     (*segment).abandoned_next,
[INFO] [stdout] 611 | |                     Ordering::Relaxed,
[INFO] [stdout] 612 | |                     Ordering::SeqCst,
[INFO] [stdout] 613 | |                 )
[INFO] [stdout]     | |_________________^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 538 - static mut ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout] 538 + static ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:616:23
[INFO] [stdout]     |
[INFO] [stdout] 616 |             segment = ABANDONED.load(Ordering::Relaxed);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 538 - static mut ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout] 538 + static ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:623:9
[INFO] [stdout]     |
[INFO] [stdout] 623 |         ABANDONED_COUNT.fetch_sub(1, Ordering::Relaxed);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 539 - static mut ABANDONED_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout] 539 + static ABANDONED_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `mimalloc_rs` (lib test) due to 11 previous errors; 68 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/heap.rs:168:9
[INFO] [stdout]     |
[INFO] [stdout] 137 | unsafe fn mi_heap_collect_ex(heap: *mut MiHeap, collect: MiCollect) { unsafe {
[INFO] [stdout]     |                                                                       ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 168 |         unsafe {
[INFO] [stdout]     |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/internal.rs:174:19
[INFO] [stdout]     |
[INFO] [stdout] 172 | pub(crate) unsafe fn mi_page_has_free(page: *mut MiPage) -> bool { unsafe {
[INFO] [stdout]     |                                                                    ------ because it's nested under this `unsafe` block
[INFO] [stdout] 173 |     mi_assert_internal(!page.is_null());
[INFO] [stdout] 174 |     let hasfree = unsafe {
[INFO] [stdout]     |                   ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `page`
[INFO] [stdout]    --> src/internal.rs:231:36
[INFO] [stdout]     |
[INFO] [stdout] 231 | pub(crate) unsafe fn mi_block_next(page: *const MiPage, block: *const MiBlock) -> *const MiBlock { unsafe {
[INFO] [stdout]     |                                    ^^^^ help: if this is intentional, prefix it with an underscore: `_page`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `page`
[INFO] [stdout]    --> src/internal.rs:237:5
[INFO] [stdout]     |
[INFO] [stdout] 237 |     page: *const MiPage,
[INFO] [stdout]     |     ^^^^ help: if this is intentional, prefix it with an underscore: `_page`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]   --> src/page.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 32 | ) -> *mut MiBlock { unsafe {
[INFO] [stdout]    |                     ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 35 |     unsafe { page_start.add(i * (*page).block_size) as *mut MiBlock }
[INFO] [stdout]    |     ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/page.rs:357:21
[INFO] [stdout]     |
[INFO] [stdout] 356 | ) { unsafe {
[INFO] [stdout]     |     ------ because it's nested under this `unsafe` block
[INFO] [stdout] 357 |     let page_area = unsafe { _mi_page_start(_mi_page_segment(page), page, null_mut()) };
[INFO] [stdout]     |                     ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/page.rs:359:17
[INFO] [stdout]     |
[INFO] [stdout] 356 | ) { unsafe {
[INFO] [stdout]     |     ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 359 |     let start = unsafe { mi_page_block_at(page, page_area, (*page).capacity.into()) };
[INFO] [stdout]     |                 ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/page.rs:362:15
[INFO] [stdout]     |
[INFO] [stdout] 356 | ) { unsafe {
[INFO] [stdout]     |     ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 362 |     let end = unsafe {
[INFO] [stdout]     |               ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/page.rs:372:20
[INFO] [stdout]     |
[INFO] [stdout] 356 | ) { unsafe {
[INFO] [stdout]     |     ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 372 |         let next = unsafe { (block as *mut u8).add(bsize) as *mut MiBlock };
[INFO] [stdout]     |                    ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/page.rs:373:9
[INFO] [stdout]     |
[INFO] [stdout] 356 | ) { unsafe {
[INFO] [stdout]     |     ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 373 |         unsafe { mi_block_set_next(page, block, next) };
[INFO] [stdout]     |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/page.rs:377:5
[INFO] [stdout]     |
[INFO] [stdout] 356 | ) { unsafe {
[INFO] [stdout]     |     ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 377 |     unsafe { mi_block_set_next(page, end, null_mut()) };
[INFO] [stdout]     |     ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/page.rs:565:28
[INFO] [stdout]     |
[INFO] [stdout] 557 | unsafe fn mi_huge_page_alloc(heap: *mut MiHeap, size: usize) -> *mut MiPage { unsafe {
[INFO] [stdout]     |                                                                               ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 565 |         mi_assert_internal(unsafe { (*page).block_size } == block_size);
[INFO] [stdout]     |                            ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/page.rs:599:24
[INFO] [stdout]     |
[INFO] [stdout] 571 | pub(crate) unsafe fn _mi_malloc_generic(mut heap: *mut MiHeap, size: usize) -> *mut u8 { unsafe {
[INFO] [stdout]     |                                                                                          ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 599 |     mi_assert_internal(unsafe { (*page).block_size } >= size);
[INFO] [stdout]     |                        ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MiHeapArea` is never constructed
[INFO] [stdout]   --> src/lib.rs:38:19
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub(crate) struct MiHeapArea {
[INFO] [stdout]    |                   ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `MiBlockVisitFun` is never used
[INFO] [stdout]   --> src/lib.rs:46:17
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub(crate) type MiBlockVisitFun = fn(
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_malloc_small` is never used
[INFO] [stdout]   --> src/alloc.rs:43:11
[INFO] [stdout]    |
[INFO] [stdout] 43 | unsafe fn mi_malloc_small(size: usize) -> *mut u8 {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_zalloc_small` is never used
[INFO] [stdout]   --> src/alloc.rs:49:11
[INFO] [stdout]    |
[INFO] [stdout] 49 | unsafe fn mi_zalloc_small(size: usize) -> *mut u8 { unsafe {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_zalloc` is never used
[INFO] [stdout]   --> src/alloc.rs:85:15
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub unsafe fn mi_heap_zalloc(heap: *mut MiHeap, size: usize) -> *mut u8 { unsafe {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_zalloc` is never used
[INFO] [stdout]   --> src/alloc.rs:89:15
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub unsafe fn mi_zalloc(size: usize) -> *mut u8 { unsafe {
[INFO] [stdout]    |               ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_usable_size` is never used
[INFO] [stdout]    --> src/alloc.rs:250:15
[INFO] [stdout]     |
[INFO] [stdout] 250 | pub unsafe fn mi_usable_size(p: *mut u8) -> usize { unsafe {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_collect` is never used
[INFO] [stdout]    --> src/heap.rs:195:11
[INFO] [stdout]     |
[INFO] [stdout] 195 | unsafe fn mi_heap_collect(heap: *mut MiHeap, force: bool) { unsafe {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_collect` is never used
[INFO] [stdout]    --> src/heap.rs:206:11
[INFO] [stdout]     |
[INFO] [stdout] 206 | unsafe fn mi_collect(force: bool) { unsafe {
[INFO] [stdout]     |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_get_default` is never used
[INFO] [stdout]    --> src/heap.rs:213:15
[INFO] [stdout]     |
[INFO] [stdout] 213 | pub(crate) fn mi_heap_get_default() -> *mut MiHeap {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_get_backing` is never used
[INFO] [stdout]    --> src/heap.rs:218:4
[INFO] [stdout]     |
[INFO] [stdout] 218 | fn mi_heap_get_backing() -> *mut MiHeap {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_new` is never used
[INFO] [stdout]    --> src/heap.rs:227:4
[INFO] [stdout]     |
[INFO] [stdout] 227 | fn mi_heap_new() -> *mut MiHeap {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_reset_pages` is never used
[INFO] [stdout]    --> src/heap.rs:243:11
[INFO] [stdout]     |
[INFO] [stdout] 243 | unsafe fn mi_heap_reset_pages(heap: *mut MiHeap) { unsafe {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_free` is never used
[INFO] [stdout]    --> src/heap.rs:258:11
[INFO] [stdout]     |
[INFO] [stdout] 258 | unsafe fn mi_heap_free(heap: *mut MiHeap) { unsafe {
[INFO] [stdout]     |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_destroy_pages` is never used
[INFO] [stdout]    --> src/heap.rs:313:11
[INFO] [stdout]     |
[INFO] [stdout] 313 | unsafe fn mi_heap_destroy_pages(heap: *mut MiHeap) { unsafe {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_destroy` is never used
[INFO] [stdout]    --> src/heap.rs:323:4
[INFO] [stdout]     |
[INFO] [stdout] 323 | fn mi_heap_destroy(heap: *mut MiHeap) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_absorb` is never used
[INFO] [stdout]    --> src/heap.rs:348:4
[INFO] [stdout]     |
[INFO] [stdout] 348 | fn mi_heap_absorb(heap: *mut MiHeap, from: *mut MiHeap) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_delete` is never used
[INFO] [stdout]    --> src/heap.rs:384:4
[INFO] [stdout]     |
[INFO] [stdout] 384 | fn mi_heap_delete(heap: *mut MiHeap) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_of_block` is never used
[INFO] [stdout]    --> src/heap.rs:416:4
[INFO] [stdout]     |
[INFO] [stdout] 416 | fn mi_heap_of_block(p: *const MiBlock) -> *mut MiHeap {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_contains_block` is never used
[INFO] [stdout]    --> src/heap.rs:426:4
[INFO] [stdout]     |
[INFO] [stdout] 426 | fn mi_heap_contains_block(heap: *mut MiHeap, p: *const MiBlock) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_page_check_owned` is never used
[INFO] [stdout]    --> src/heap.rs:434:4
[INFO] [stdout]     |
[INFO] [stdout] 434 | fn mi_heap_page_check_owned(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_check_owned` is never used
[INFO] [stdout]    --> src/heap.rs:455:4
[INFO] [stdout]     |
[INFO] [stdout] 455 | fn mi_heap_check_owned(heap: *mut MiHeap, p: *const MiBlock) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_check_owned` is never used
[INFO] [stdout]    --> src/heap.rs:475:4
[INFO] [stdout]     |
[INFO] [stdout] 475 | fn mi_check_owned(p: *const MiBlock) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MiHeapAreaEx` is never constructed
[INFO] [stdout]    --> src/heap.rs:486:8
[INFO] [stdout]     |
[INFO] [stdout] 486 | struct MiHeapAreaEx {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_area_visit_blocks` is never used
[INFO] [stdout]    --> src/heap.rs:491:4
[INFO] [stdout]     |
[INFO] [stdout] 491 | fn mi_heap_area_visit_blocks(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `MiHeapAreaVisitFun` is never used
[INFO] [stdout]    --> src/heap.rs:573:6
[INFO] [stdout]     |
[INFO] [stdout] 573 | type MiHeapAreaVisitFun = fn(heap: *mut MiHeap, area: *mut MiHeapAreaEx, arg: *mut u8) -> bool;
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_visit_areas_page` is never used
[INFO] [stdout]    --> src/heap.rs:575:4
[INFO] [stdout]     |
[INFO] [stdout] 575 | fn mi_heap_visit_areas_page(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_visit_areas` is never used
[INFO] [stdout]    --> src/heap.rs:605:4
[INFO] [stdout]     |
[INFO] [stdout] 605 | fn mi_heap_visit_areas(heap: *mut MiHeap, visitor: *mut MiHeapAreaVisitFun, arg: *mut u8) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MiVisitBlocksArgs` is never constructed
[INFO] [stdout]    --> src/heap.rs:621:8
[INFO] [stdout]     |
[INFO] [stdout] 621 | struct MiVisitBlocksArgs {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_area_visitor` is never used
[INFO] [stdout]    --> src/heap.rs:627:4
[INFO] [stdout]     |
[INFO] [stdout] 627 | fn mi_heap_area_visitor(heap: *mut MiHeap, xarea: *mut MiHeapAreaEx, arg: *mut u8) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_visit_blocks` is never used
[INFO] [stdout]    --> src/heap.rs:648:4
[INFO] [stdout]     |
[INFO] [stdout] 648 | fn mi_heap_visit_blocks(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_random_shuffle` is never used
[INFO] [stdout]    --> src/init.rs:195:15
[INFO] [stdout]     |
[INFO] [stdout] 195 | pub(crate) fn mi_random_shuffle(mut x: usize) -> usize {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_random_init` is never used
[INFO] [stdout]    --> src/init.rs:214:15
[INFO] [stdout]     |
[INFO] [stdout] 214 | pub(crate) fn mi_random_init(seed: usize) -> usize {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_is_default` is never used
[INFO] [stdout]   --> src/internal.rs:76:15
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub(crate) fn mi_heap_is_default(heap: *const MiHeap) -> bool {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_heap_is_backing` is never used
[INFO] [stdout]   --> src/internal.rs:81:15
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub(crate) fn mi_heap_is_backing(heap: *const MiHeap) -> bool {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_get_free_small_page` is never used
[INFO] [stdout]   --> src/internal.rs:98:15
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub(crate) fn mi_get_free_small_page(size: usize) -> *mut MiPage {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_page_has_free` is never used
[INFO] [stdout]    --> src/internal.rs:172:22
[INFO] [stdout]     |
[INFO] [stdout] 172 | pub(crate) unsafe fn mi_page_has_free(page: *mut MiPage) -> bool { unsafe {
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_page_all_used` is never used
[INFO] [stdout]    --> src/internal.rs:192:22
[INFO] [stdout]     |
[INFO] [stdout] 192 | pub(crate) unsafe fn mi_page_all_used(page: *mut MiPage) -> bool { unsafe {
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MI_MAX_SLICE_SHIFT` is never used
[INFO] [stdout]    --> src/page.rs:348:7
[INFO] [stdout]     |
[INFO] [stdout] 348 | const MI_MAX_SLICE_SHIFT: usize = 6; // At most 64 slices
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MI_MAX_SLICES` is never used
[INFO] [stdout]    --> src/page.rs:349:7
[INFO] [stdout]     |
[INFO] [stdout] 349 | const MI_MAX_SLICES: usize = 1 << MI_MAX_SLICE_SHIFT;
[INFO] [stdout]     |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MI_MIN_SLICES` is never used
[INFO] [stdout]    --> src/page.rs:350:7
[INFO] [stdout]     |
[INFO] [stdout] 350 | const MI_MIN_SLICES: usize = 2;
[INFO] [stdout]     |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_register_deferred_free` is never used
[INFO] [stdout]    --> src/page.rs:548:22
[INFO] [stdout]     |
[INFO] [stdout] 548 | pub(crate) unsafe fn mi_register_deferred_free(fn_ptr: MiDeferredFreeFun) { unsafe {
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_page_queue_is_special` is never used
[INFO] [stdout]   --> src/page_queue.rs:23:15
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub(crate) fn mi_page_queue_is_special(pq: *const MiPageQueue) -> bool {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_bin_size` is never used
[INFO] [stdout]   --> src/page_queue.rs:73:15
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub(crate) fn mi_bin_size(bin: u8) -> usize {
[INFO] [stdout]    |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_good_size` is never used
[INFO] [stdout]   --> src/page_queue.rs:78:15
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub(crate) fn mi_good_size(size: usize) -> usize {
[INFO] [stdout]    |               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_page_queue_append` is never used
[INFO] [stdout]    --> src/page_queue.rs:269:22
[INFO] [stdout]     |
[INFO] [stdout] 269 | pub(crate) unsafe fn mi_page_queue_append(
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mi_page_size` is never used
[INFO] [stdout]    --> src/segment.rs:405:11
[INFO] [stdout]     |
[INFO] [stdout] 405 | unsafe fn mi_page_size(page: *const MiPage) -> usize { unsafe {
[INFO] [stdout]     |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MI_INTPTR_SIZE` is never used
[INFO] [stdout]   --> src/types.rs:23:18
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub(crate) const MI_INTPTR_SIZE: usize = 1 << MI_INTPTR_SHIFT;
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MI_LARGE_PAGES_PER_SEGMENT` is never used
[INFO] [stdout]   --> src/types.rs:43:18
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub(crate) const MI_LARGE_PAGES_PER_SEGMENT: usize = MI_SEGMENT_SIZE / MI_LARGE_PAGE_SIZE;
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `store` is never used
[INFO] [stdout]    --> src/types.rs:167:19
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl MiThreadFree {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub(crate) fn store(&self, value: usize) {
[INFO] [stdout]     |                   ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MiStatCount` is never constructed
[INFO] [stdout]    --> src/types.rs:349:19
[INFO] [stdout]     |
[INFO] [stdout] 349 | pub(crate) struct MiStatCount {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MiStatCounter` is never constructed
[INFO] [stdout]    --> src/types.rs:357:19
[INFO] [stdout]     |
[INFO] [stdout] 357 | pub(crate) struct MiStatCounter {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MiStats` is never constructed
[INFO] [stdout]    --> src/types.rs:363:19
[INFO] [stdout]     |
[INFO] [stdout] 363 | pub(crate) struct MiStats {
[INFO] [stdout]     |                   ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/init.rs:39:28
[INFO] [stdout]     |
[INFO] [stdout]  39 |         unsafe { MI_INIT![&MI_PAGE_EMPTY as *const MiPage as *mut MiPage; 130] }
[INFO] [stdout]     |                            ^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pages_free_direct: MI_SMALL_PAGES_EMPTY!(),
[INFO] [stdout]     |                        ----------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: `#[deny(static_mut_refs)]` (part of `#[deny(rust_2024_compatibility)]`) on by default
[INFO] [stdout]     = note: this error originates in the macro `MI_SMALL_PAGES_EMPTY` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout]  19 - pub(crate) static mut MI_PAGE_EMPTY: MiPage = MiPage {
[INFO] [stdout]  19 + pub(crate) static MI_PAGE_EMPTY: MiPage = MiPage {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/init.rs:39:28
[INFO] [stdout]     |
[INFO] [stdout]  39 |         unsafe { MI_INIT![&MI_PAGE_EMPTY as *const MiPage as *mut MiPage; 130] }
[INFO] [stdout]     |                            ^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pages_free_direct: MI_SMALL_PAGES_EMPTY!(),
[INFO] [stdout]     |                        ----------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: this error originates in the macro `MI_SMALL_PAGES_EMPTY` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout]  19 - pub(crate) static mut MI_PAGE_EMPTY: MiPage = MiPage {
[INFO] [stdout]  19 + pub(crate) static MI_PAGE_EMPTY: MiPage = MiPage {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]    --> src/init.rs:216:32
[INFO] [stdout]     |
[INFO] [stdout] 216 |     let mut x = mi_random_init as usize;
[INFO] [stdout]     |                                ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(function_casts_as_integer)]` on by default
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]     |
[INFO] [stdout] 216 |     let mut x = mi_random_init as *const () as usize;
[INFO] [stdout]     |                                ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:560:12
[INFO] [stdout]     |
[INFO] [stdout] 560 |       while !ABANDONED
[INFO] [stdout]     |  ____________^
[INFO] [stdout] 561 | |         .compare_exchange(
[INFO] [stdout] 562 | |             segment,
[INFO] [stdout] 563 | |             (*segment).abandoned_next,
[INFO] [stdout] 564 | |             Ordering::Relaxed,
[INFO] [stdout] 565 | |             Ordering::SeqCst,
[INFO] [stdout] 566 | |         )
[INFO] [stdout]     | |_________^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 538 - static mut ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout] 538 + static ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:569:37
[INFO] [stdout]     |
[INFO] [stdout] 569 |         (*segment).abandoned_next = ABANDONED.load(Ordering::Relaxed);
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 538 - static mut ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout] 538 + static ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:571:5
[INFO] [stdout]     |
[INFO] [stdout] 571 |     ABANDONED_COUNT.fetch_add(1, Ordering::Relaxed);
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 539 - static mut ABANDONED_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout] 539 + static ABANDONED_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:594:18
[INFO] [stdout]     |
[INFO] [stdout] 594 |         atmost = ABANDONED_COUNT.load(Ordering::Relaxed) + 16;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 539 - static mut ABANDONED_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout] 539 + static ABANDONED_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:596:18
[INFO] [stdout]     |
[INFO] [stdout] 596 |         atmost = ABANDONED_COUNT.load(Ordering::Relaxed) / 8;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 539 - static mut ABANDONED_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout] 539 + static ABANDONED_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:605:27
[INFO] [stdout]     |
[INFO] [stdout] 605 |         let mut segment = ABANDONED.load(Ordering::Relaxed);
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 538 - static mut ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout] 538 + static ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:607:17
[INFO] [stdout]     |
[INFO] [stdout] 607 |               && !ABANDONED
[INFO] [stdout]     |  _________________^
[INFO] [stdout] 608 | |                 .compare_exchange(
[INFO] [stdout] 609 | |                     segment,
[INFO] [stdout] 610 | |                     (*segment).abandoned_next,
[INFO] [stdout] 611 | |                     Ordering::Relaxed,
[INFO] [stdout] 612 | |                     Ordering::SeqCst,
[INFO] [stdout] 613 | |                 )
[INFO] [stdout]     | |_________________^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 538 - static mut ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout] 538 + static ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:616:23
[INFO] [stdout]     |
[INFO] [stdout] 616 |             segment = ABANDONED.load(Ordering::Relaxed);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 538 - static mut ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout] 538 + static ABANDONED: AtomicPtr<MiSegment> = AtomicPtr::new(null_mut());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a shared reference to mutable static
[INFO] [stdout]    --> src/segment.rs:623:9
[INFO] [stdout]     |
[INFO] [stdout] 623 |         ABANDONED_COUNT.fetch_sub(1, Ordering::Relaxed);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout] help: this type already provides "interior mutability", so its binding doesn't need to be declared as mutable
[INFO] [stdout]     |
[INFO] [stdout] 539 - static mut ABANDONED_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout] 539 + static ABANDONED_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `mimalloc_rs` (lib) due to 11 previous errors; 68 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "2f54df66835a7032c9b60e0092f93743cd1dca3ceecfd5903a6748b96e89b45e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2f54df66835a7032c9b60e0092f93743cd1dca3ceecfd5903a6748b96e89b45e", kill_on_drop: false }`
[INFO] [stdout] 2f54df66835a7032c9b60e0092f93743cd1dca3ceecfd5903a6748b96e89b45e
